package cn.tanghom.support.hook;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import com.unbiz.common.StringUtil;

import cn.tanghom.content.model.Report;
import cn.tanghom.support.web.BaseController;

/**
 * 
 * @author Hunteron-cp
 *
 * @param <M> 是针对模型M的统计
 */
public class ReportModule<M> extends AbstractModule<Report>{
	
	protected final String pluginModelName;	
	
	
	public ReportModule(String modelName){		
		this.pluginModelName = modelName;		
	}	
		
	
	//如果模型一样，则继续执行
	public boolean hook(String method, Object... params) { 
		BaseController<?> c = (BaseController<?>)params[1];		
		String model2 = c.getAttr("model");
		if(model2==null) model2 = c.getModelClass().getSimpleName();
		if(pluginModelName.equalsIgnoreCase(model2)){
			return true;			
		}		
		return false;
	}  
	
	
	//加载统计项，根据主报表，加载同一时期的其他报表，进行聚合计算
	@Override
	public boolean loadModel(Report reportMaster){				
		return false;
	}
	
	// 显示统计项
	@Override
	public boolean viewModel(Report reportMaster,BaseController c){			
	
		return true;
	}
	
	// 生成统计项列表，不需要保存，一般为时点指标
	@Override
	public boolean listModel(List<Report> reports,BaseController c) { 		
	    return true;
	}	

	//生成需要保存的报表，add到report。一般为时段指标
	public boolean buildReport(Report report,BaseController c,List<Report> reportsResult){	
		return true;
	}
	
	//生成需要保存的报表，add到report。
	public boolean buildDailyReport(Report report,BaseController c,List<Report> reportsResult){	
		return true;
	}
}
